package amani.wechat.platform.services;

import java.util.List;
import java.util.Map;

import amani.wechat.platform.controller.model.ActivateCard;
import amani.wechat.platform.webserviceClient.Cardinfo;
import amani.wechat.platform.webserviceClient.CategoryinfoId;
import amani.wechat.platform.webserviceClient.Companyinfo;
import amani.wechat.platform.webserviceClient.Evaluation;
import amani.wechat.platform.webserviceClient.Goodsinfo;
import amani.wechat.platform.webserviceClient.Nointernalcardinfo;
import amani.wechat.platform.webserviceClient.Projectinfo;
import amani.wechat.platform.webserviceClient.Roominfo;
import amani.wechat.platform.webserviceClient.SpadDconsumeInfo;
import amani.wechat.platform.webserviceClient.SpadMconsumeInfo;
import amani.wechat.platform.webserviceClient.StaffHairDesignerInfo;
import amani.wechat.platform.webserviceClient.Staffinfo;
import amani.wechat.platform.webserviceClient.VirtualCard;
import amani.wechat.platform.webserviceClient.Vouchersdetal;
import amani.wechat.platform.webserviceClient.Wxbandcard;


public interface ICommonService {
	
	/**
	 * 跟新carddecode的状态，0:未发放  1：已发放  2:已发放，但未领取  
	 * @param cardCode
	 * @param state
	 * @return
	 */
	 
	public boolean updtaeCardCodeState(String cardCode,int state);
	
	/**
	 * 订单状态，通过cardCode
	 * @param cardCode
	 * @param orderState
	 * @return
	 */ 
	public boolean updtaeOrderStateByCardCode(String cardCode,int orderState);
	/**
	 * 更新cardCode 
	 * @param orderno
	 * @param cardId
	 * @param cardCode
	 * @return
	 */
	public boolean updtaeOrderCard(String orderno,String cardId,String cardCode);

	/**
	 * 更新订单状态
	 * @param orderno
	 * @param OrderType
	 * @param orderState
	 * @return
	 */ 
	public boolean updtaeOrderStateByOrderNo(String orderno,String OrderType,int orderState);
	
	/**
	 * 更新订单状态
	 * @param orderno
	 * @param OrderType
	 * @return
	 */ 
	public int getOrderStateByOrderNo(String orderno,String OrderType);

	/**
	 * 获取一个可用券号
	 * @param cardId
	 * @return
	 */ 
	public String getCardcode(String cardId);
	
	/**
	 * 获取新闻活动列表
	 * @param cid
	 * @return
	 */ 
	public  List<Map<String, Object>> getNewsListByCid( String cid);
	
	/**
	 * 获取新闻活动
	 * @param id
	 * @return
	 */ 
	public Map<String, Object> getNewsById( String id);
	
	/**
	 * 加载微信订单
	 * @param orderno
	 * @return
	 */
	public Map<String, Object> loadWxOrderByOrderNo(String orderno);
	
	
	/**
	 * 保存微信订单数据第一步
	 * @param isExpress
	 * @param orderno
	 * @param price
	 * @param openid
	 * @param memberno
	 * @param address
	 * @param username
	 * @param phone
	 * @param compno
	 * @param compname
	 * @param companyaddress
	 * @return
	 */ 
	public int saveWxOrderStep1(boolean isExpress,String orderno,double price,String openid,String memberno, String address,String username,String phone,String compno,String compname,String companyaddress);
	
	
	/**
	 * 保存微信订单数据第二步
	 * @param parentId
	 * @param produectId
	 * @param number
	 */
	public void saveWxOrderStep2(int parentId, int produectId,int number);

	/**
	 * 加载商品描述信息
	 * @param produectId
	 * @return
	 */
	public List<Map<String, Object>> loadProductDescription(String produectId);
	
	/**
	 * 加载商品信息
	 * @param produectId
	 * @return
	 */
	public List<Map<String, Object>> loadProductInfo(String produectId);


	/**
	 * 加载商品分类下的商品信息
	 * @param goupId
	 * @return
	 */
	public List<Map<String, Object>> loadProductsByGroupId(String goupId);

	/**
	 * 加载商品分类
	 * @return
	 */
	public List<Map<String, Object>> loadProductGroup();
	
	/**
	 * 获取所有商品信息
	 * @return
	 */
	 public  List<Map<String, Object>> loadHotProducts();
	/**
	 * 获取单个门店的所有信息
	 * 
	 * @param strCompId
	 * @return
	 */
	public Companyinfo loadCompanyinfo(String strCompId);

	/**
	 * 获取所有的门店信息所有信息
	 * 
	 * @return
	 */
	public List<Companyinfo> loadAllCompanyinfo();

	/**
	 * 获取单个门店的项目信息
	 * 
	 * @param strCompId
	 * @return
	 */
	public List<Projectinfo> loadProjectinfo(String strCompId);

	/**
	 * 获取所有门店的产品信息
	 * 
	 * @return
	 */

	public List<Goodsinfo> loadAllGoodinfo();

	/**
	 * 获取单个门店的员工信息
	 * 
	 * @param strCompId
	 * @param itemNo
	 * @return
	 */
	public String loadStaffinfo(String strCompId, String itemNo);

	/**
	 * 获取单个门店的排班信息
	 * 
	 * @param strCompId
	 * @return
	 */
	public List<CategoryinfoId> loadCategory(String strCompId);

	/**
	 * //获取单个门店的房间信息
	 * 
	 * @param strCompId
	 * @return
	 */
	public List<Roominfo> loadRoomInfo(String strCompId);

	/**
	 * 获取单个门店的镜台信息
	 * 
	 * @param strCompId
	 * @return
	 */
	public List<String> loadMirror(String strCompId);

	/**
	 * 获取会员信息
	 * 
	 * @param strPhone
	 * @param strCardNo
	 * @return
	 */
	public List<Cardinfo> loadCardInfos(String strPhone, String strCardNo);

	/**
	 * 获取单个会员卡信息
	 * 
	 * @param strCompId
	 * @param strCardNo
	 * @return
	 */
	public Cardinfo loadCardInfo(String strCompId, String strCardNo);

	/**
	 * 保存开单信息
	 * 
	 * @param spadMconsumeInfo
	 * @param spadDconsumeInfo
	 * @return
	 */
	public boolean saveIPADBillInfo(SpadMconsumeInfo spadMconsumeInfo,
			List<SpadDconsumeInfo> spadDconsumeInfo);

	/**
	 * 保存开单信息
	 * 
	 * @return
	 */
	public String loadVouchers();

	/***
	 * 保存开单信息
	 * 
	 * @param strOpenId
	 * @param strClientName
	 * @param strMobile
	 * @param strVchNo
	 * @param strBillId
	 * @return
	 */
	public String loadDqyNo(String strOpenId, String strClientName,
			String strMobile, String strVchNo, String strBillId);

	/**
	 * 保存开单信息
	 * 
	 * @param strCardNo
	 * @return
	 */
	public String loadCardAccount(String strCardNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strCompId
	 * @param strCardNo
	 * @return
	 */
	public String loadCardproaccounts(String strCompId, String strCardNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strCardNo
	 * @return
	 */
	public String loadcCardaccountchangehistories(String strCardNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strCardNo
	 * @param strPassword
	 * @return
	 */
	public boolean updateCardPassword(String strCardNo, String strPassword);

	/**
	 * 保存开单信息
	 * 
	 * @param strCardNo
	 * @param strPassword
	 * @return
	 */
	public boolean checkCardPassword(String strCardNo, String strPassword);

	/**
	 * 保存开单信息
	 * 
	 * @param strVchNo
	 * @return
	 */
	public List<Vouchersdetal> loadVouchersdetalsById(String strVchNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strCardNo
	 * @param strOperId
	 * @return
	 */
	public Wxbandcard loadWxbandcard(String strCardNo, String strOperId);

	/**
	 * 保存开单信息
	 * 
	 * @param strDyqNo
	 * @return
	 */
	public boolean checkDyqNo(String strDyqNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strDyqNo
	 * @return
	 */
	public String lsDnointernalcardinfos(String strDyqNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strDyqNo
	 * @return
	 */
	public Nointernalcardinfo loadNointernalcardinfo(String strDyqNo);

	/**
	 * 保存开单信息
	 * 
	 * @param strOperId
	 * @return
	 */
	public String loadwWeixinclents(String strOperId);

	/**
	 * 保存开单信息
	 * 
	 * @param strCompId
	 * @param strBillId
	 * @param strDate
	 * @return
	 */
	public boolean wxPost(String strCompId, String strBillId, String strDate);

	/**
	 * 保存开单信息
	 * 
	 * @param billid
	 * @param operid
	 * @param discount
	 * @param content
	 * @param amt
	 * @return
	 */
	public boolean saveEvaluation(String billid, String operid,
			double discount, String content, double amt);

	/**
	 * 保存开单信息
	 * 
	 * @param operid
	 * @param billid
	 * @return
	 */
	public Evaluation loadEvaluation(String operid, String billid);

	/**
	 * 保存预约主档
	 * 
	 * @param strCompId
	 * @param strBillId
	 * @param strCardNo
	 * @param orderPhone
	 * @param strDate
	 * @param strTime
	 * @param openid
	 * @param billType
	 * @param complydetail
	 * @return
	 */
	public boolean saveOrders(String strCompId, String strBillId,
			String strCardNo, String orderPhone, String strDate,
			String strTime, String openid, int billType, String complydetail);

	/**
	 * 保存预约主档
	 * 
	 * @param strCompId
	 * @param strBillId
	 * @param strPrjInfo
	 * @param strPrjName
	 * @return
	 */
	public boolean saveOrderPrjInfo(String strCompId, String strBillId,
			String strPrjInfo, String strPrjName);

	/**
	 * 保存预约主档
	 * 
	 * @param strCompId
	 * @param strBillId
	 * @param strEmpNo
	 * @param strEmpName
	 * @param strEmpInid
	 * @return
	 */
	public boolean saveOrderEmpInfo(String strCompId, String strBillId,
			String strEmpNo, String strEmpName, String strEmpInid);

	/**
	 * 查询预约
	 * 
	 * @param openid
	 * @return
	 */
	public String loadOrders(String openid);

	/**
	 * 查询推荐店面
	 * 
	 * @param strCardNo
	 * @return
	 */
	public String loadCompByCardNo(String strCardNo);

	/**
	 * 查询推荐员工
	 * 
	 * @param strCompId
	 * @param strCardNo
	 * @return
	 */
	public String loadEmpInfoByComp(String strCompId, String strCardNo);

	/**
	 * 查询店面所有的美容师和美发师
	 */
	public String loadEmpInfoByDept(String strCompId);

	/**
	 * 单据作废
	 * 
	 * @param strCompId
	 * @param strBillId
	 * @return
	 */
	public boolean updBillState(String strCompId, String strBillId);

	/**
	 * 修改单据状态
	 * 
	 * @param strBillId
	 * @return
	 */
	public boolean updOrderState(String strBillId);

	/**
	 * 查询单据状态
	 * 
	 * @param strBillId
	 * @return
	 */
	public String checkBillState(String strBillId);

	/**
	 * 修改单据状态
	 * 
	 * @param strParams
	 * @return
	 */
	public boolean bandStaffInfo(String strParams);

	/**
	 * 保存预约主档
	 * 
	 * @param strCompId
	 * @param strBillId
	 * @param strItemNo
	 * @param strEmpNo
	 * @param ispz
	 * @param strDate
	 * @param strTime
	 * @param orderPhone
	 * @param strCardNo
	 * @param openid
	 * @param strEmpName
	 * @return
	 */
	public String saveNewOrders(String strCompId, String strBillId,
			String strItemNo, String strEmpNo, int ispz, String strDate,
			String strTime, String orderPhone, String strCardNo, String openid,
			String strEmpName);

	/**
	 * 查询预约
	 */
	public String loadOrderDetal(String openid);

	/**
	 * 根据预约单号查询预约
	 * 
	 * @param callbillid
	 * @return
	 */
	public String loadOrderById(String callbillid);

	/**
	 * 根据员工工号查询预约
	 * 
	 * @param strCompId
	 * @param strEmpNo
	 * @param orderDate
	 * @param orderTime
	 * @return
	 */
	public String loadOrderByEmp(String strCompId, String strEmpNo,
			String orderDate, String orderTime);

	/**
	 * 根据OpenId查询预约
	 * 
	 * @param openId
	 * @param orderDate
	 * @param orderTime
	 * @return
	 */
	public String loadOrderByOpenId(String openId, String orderDate,
			String orderTime);

	/**
	 * 推荐员工
	 * 
	 * @param strCompId
	 * @param strCardNo
	 * @param billtype
	 * @return
	 */
	public String loadNewEmpInfoByComp(String strCompId, String strCardNo,
			int billtype);

	/**
	 * 推荐明星发型师
	 * 
	 * @param strCompId
	 * @return
	 */
	public String loadStartHairInfo(String strCompId);

	/**
	 * 推荐明星美容师
	 * 
	 * @param strCompId
	 * @return
	 */
	public String loadStartBeautyInfo(String strCompId);

	/**
	 * 检查用户名密码
	 * 
	 * @param userName
	 * @param pwd
	 * @return
	 */
	public String checkUser(String strCompId, String userName, String pwd);

	/**
	 * 保存盘点信息
	 * 
	 * @param inventory
	 * @param lsInventorydetals
	 * @return
	 */
	public String saveInventory(String strCompId, String userId,
			String strParams);

	/**
	 * 增加盘点主档
	 * 
	 * @param strCompId
	 * @return
	 */
	public String addInventory(String strCompId);

	/**
	 * 检查条形码的状态
	 * 
	 * @param strCompId
	 * @param strGoodBar
	 * @return
	 */
	public String checkGoodBar(String strCompId, String strGoodBar);

	/**
	 * 删除盘点信息
	 * 
	 * @param inventBill
	 * @return
	 */
	public String deleteInventoryByInventBill(String strCompId,
			String inventBill);

	/**
	 * 删除盘点信息
	 * 
	 * @param inventBill
	 * @return
	 */
	public String deleteInventoryByBill(String strCompId, String bill);

	/**
	 * 查询条形码信息
	 * 
	 * @param goodBarNo
	 * @return
	 */
	public String findGoodBarInfo(String goodBarNo);
	
//	/**
//	 * 到店首页美发作品数据获取
//	 * @param begin
//	 * @param end
//	 * @return
//	 */
//	@WebMethod(operationName="pageWorks")
//	public List<Map<String, Object>> pageWorks(int begin,int end);
//	
//	/**
//	 * 美发作品页面作品数据获取
//	 * @param id
//	 * @return
//	 */
//	@WebMethod(operationName="loadWorks")
//	public Map<String, Object> loadWorks(int id);
//	
//	/**
//	 * 美发作品页面设计师数据获取 
//	 * @param staffopenid
//	 * @return
//	 */
//	public List<Map<String, Object>> loadStaffinfo1(String staffopenid);
//	
//	/**
//	 * 美发作品页面设计师美发作品数据获取 
//	 * @param begin
//	 * @param end
//	 * @param staffopenid
//	 * @return
//	 */
//	public List<Map<String, Object>> pageWorksByDesigner(int begin,int end,String staffopenid);
//	
//	/**
//	 * 到店页面美容项目数据获取 
//	 * @return
//	 */
//	public List<Map<String, Object>> loadAllProject();
//	
//	/**
//	 * 到店页面美容项目数据获取 
//	 * @param type
//	 * @return
//	 */
//	public List<Map<String, Object>> loadProjectByType(String type);
	
	/**
	 * 根据产品id（wx_product.id），查询产品信息
	 * @param productId
	 * @return
	 */ 
	public Map<String, Object> loadWchatProduct(String productId);
	
	/**
	 * 根据产品id（wx_product.id），查询详细步骤数据
	 * @param productId
	 * @return
	 */ 
	public List<Map<String,Object>> loadProductDetail(String productId);
	
	/**
	 * 根据产品id（wx_product.id），查询套餐数据
	 * @param productId
	 * @return
	 */ 
	public List<Map<String,Object>> loadProductPackage(String productId);

	/**
	 * 获取指定openid预约过的设计师
	 * @param openid 
	 * @param projecttype 001(头发) 004(身体) 005(面部)
	 * @return
	 */
	public List<Map<String, Object>>  loadConsumedStaffinfos(String openid,String projecttype);

	/**
	 * 获取门面的前N位员工
	 * @param compno 门面id
	 * @param projecttype 类型001(头发) 004(身体) 005(面部)
	 * @param n 
	 * @return
	 */
	public List<Map<String, Object>>  loadStaffinfosByCompno(String compno,String projecttype,int n);
	
	/**
	 * 根据openid获取会员卡信息
	 * @param openid openid
	 * @return
	 */
	public List<Map<String, Object>>  loadMemberinfoByOpenid(String openid);
	
	/**
	 * 发送短信
	 * @param phone
	 * @param message
	 * @return
	 */
	public String sendMessage(String phone,String message);
	
	/**
	 * 绑定卡
	 * @param cardno
	 * @param name
	 * @param phone
	 * @param openid
	 * @return
	 */
	public boolean bindingCard(String cardno,String name,String phone,String openid);
	
	/**
	 * 按照openId查找员工信息
	 * @param openId
	 * @return
	 */
	public Staffinfo findStaffinfo(String openId);
	
	/**
	 * 保存发型
	 * @param id
	 * @param lx
	 * @param bq
	 * @param ms
	 * @param openid
	 * @param imageUrl
	 * @return
	 */
	public boolean saveStaffHairDesignerInfo(Integer id, String lx,
			String bq, String ms, String openid,
			String imageUrl) ;

	/**
	 * 获取发型
	 * @param openid
	 * @return
	 */
	public List<StaffHairDesignerInfo> loadStaffHairDesignerInfo(String openid);
	
	/**
	 * 更新艺名和头像
	 * @param openid
	 * @param staffename
	 * @param imageurl
	 * @return
	 */
	public boolean updateStaffInfo(String openid,String staffename,String imageurl);
	
	/**
	 * 获取发型
	 * @param id
	 * @return
	 */
	public StaffHairDesignerInfo findStaffHairDesignerInfo(Integer id);
	
	/**
	 * 保存卡
	 * @param openId
	 * @param phone
	 * @param sex
	 * @return
	 */
	public VirtualCard saveVirtualCard(String openId,String phone,int sex);
	
	//获取员工不可以休息时间
	public String getStaffWorkDay(String year,String month,String openId);
	
	//保存员工休息时间
	public boolean saveStaffRestDay(String openId,String date);
	
	//获取订单
	public String getOrders(String year,String month,String openid);
	
	//获取我的全部会员卡
	public String[] loadAllCard(String strCompId, String openId);
	
	//获取我的会员账户
	public Cardinfo loadCardInfobyOpenid(String strCompId, String openId, String strCardNo);
	
	//修改会员卡密码
	public boolean changePassword(String openId, String cardno, String password);
	
	//查询在线订单（家居/到店）
	public List<Map<String, Object>> loadWxOrders(String openid, String catgory);
	
	//查询在积分和余额
	public List<ActivateCard> loadAccount(String openid);
	
	public amani.wechat.platform.services.model.Staffinfo loadStaffInfo(String staffNo);
	
	//非系统内部卡信息
	public boolean saveNointernalcardinfo(String cardvesting,String cardno,int cardtype,float cardfaceamt,int carduseflag,
			int entrytype,int cardstate,String usedate,String useinproject,String oldvalidate,String lastvalidate,String enabledate,int uespassward,String cardpassward,int createtype,int createcardtype,String openid);
	
	//非系统内部卡项目信息
	public boolean saveDnointernalcardinfo(String cardvesting,String cardno,float seqno,String ineritemno,float entrycount,
			float usecount,float lastcount, float entryamt ,float useamt,float lastamt,String costbillno, String entryremark);
}
